home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / CIncludes / FileTransfers.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-12  |  13.1 KB  |  403 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        FileTransfers.h
  3.  
  4.      Contains:    CommToolbox File Transfer Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0.1
  8.  
  9.      Copyright:    © 1988-1997 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __FILETRANSFERS__
  19. #define __FILETRANSFERS__
  20.  
  21. #ifndef __CONDITIONALMACROS__
  22. #include <ConditionalMacros.h>
  23. #endif
  24. #ifndef __STANDARDFILE__
  25. #include <StandardFile.h>
  26. #endif
  27. #ifndef __CTBUTILITIES__
  28. #include <CTBUtilities.h>
  29. #endif
  30. #ifndef __CONNECTIONS__
  31. #include <Connections.h>
  32. #endif
  33. #ifndef __FILES__
  34. #include <Files.h>
  35. #endif
  36. #ifndef __TERMINALS__
  37. #include <Terminals.h>
  38. #endif
  39.  
  40.  
  41.  
  42. #if PRAGMA_ONCE
  43. #pragma once
  44. #endif
  45.  
  46. #ifdef __cplusplus
  47. extern "C" {
  48. #endif
  49.  
  50. #if PRAGMA_IMPORT
  51. #pragma import on
  52. #endif
  53.  
  54. #if PRAGMA_STRUCT_ALIGN
  55.     #pragma options align=mac68k
  56. #elif PRAGMA_STRUCT_PACKPUSH
  57.     #pragma pack(push, 2)
  58. #elif PRAGMA_STRUCT_PACK
  59.     #pragma pack(2)
  60. #endif
  61.  
  62.  
  63. enum {
  64.     curFTVersion                = 2                                /* current file transfer manager version*/
  65. };
  66.  
  67.  
  68. enum {
  69.                                                                 /* FTErr    */
  70.     ftGenericError                = -1,
  71.     ftNoErr                        = 0,
  72.     ftRejected                    = 1,
  73.     ftFailed                    = 2,
  74.     ftTimeOut                    = 3,
  75.     ftTooManyRetry                = 4,
  76.     ftNotEnoughDSpace            = 5,
  77.     ftRemoteCancel                = 6,
  78.     ftWrongFormat                = 7,
  79.     ftNoTools                    = 8,
  80.     ftUserCancel                = 9,
  81.     ftNotSupported                = 10
  82. };
  83.  
  84. typedef OSErr                             FTErr;
  85.  
  86. enum {
  87.     ftIsFTMode                    = 1 << 0,
  88.     ftNoMenus                    = 1 << 1,
  89.     ftQuiet                        = 1 << 2,
  90.     ftConfigChanged                = 1 << 4,
  91.     ftSucc                        = 1 << 7
  92. };
  93.  
  94. typedef unsigned long                     FTFlags;
  95.  
  96. enum {
  97.     ftSameCircuit                = 1 << 0,
  98.     ftSendDisable                = 1 << 1,
  99.     ftReceiveDisable            = 1 << 2,
  100.     ftTextOnly                    = 1 << 3,
  101.     ftNoStdFile                    = 1 << 4,
  102.     ftMultipleFileSend            = 1 << 5
  103. };
  104.  
  105. typedef unsigned short                     FTAttributes;
  106.  
  107. enum {
  108.     ftReceiving                    = 0,
  109.     ftTransmitting                = 1,
  110.     ftFullDuplex                = 2                                /* (16) added ftFullDuplex bit.*/
  111. };
  112.  
  113. typedef unsigned short                     FTDirection;
  114. typedef CALLBACK_API( long , FileTransferDefProcPtr )(TermHandle hTerm, short msg, long p1, long p2, long p3);
  115. /*    application routines type definitions */
  116. typedef struct FTRecord                 FTRecord;
  117. typedef FTRecord *                        FTPtr;
  118. typedef FTPtr *                            FTHandle;
  119. typedef CALLBACK_API( OSErr , FileTransferReadProcPtr )(unsigned long *count, Ptr pData, long refCon, short fileMsg);
  120. typedef CALLBACK_API( OSErr , FileTransferWriteProcPtr )(unsigned long *count, Ptr pData, long refCon, short fileMsg);
  121. typedef CALLBACK_API( Size , FileTransferSendProcPtr )(Ptr thePtr, long theSize, long refCon, CMChannel channel, CMFlags flag);
  122. typedef CALLBACK_API( Size , FileTransferReceiveProcPtr )(Ptr thePtr, long theSize, long refCon, CMChannel channel, CMFlags *flag);
  123. typedef CALLBACK_API( OSErr , FileTransferEnvironsProcPtr )(long refCon, ConnEnvironRec *theEnvirons);
  124. typedef CALLBACK_API( void , FileTransferNotificationProcPtr )(FTHandle hFT, const FSSpec *pFSSpec)/*  (15) added const */;
  125. typedef CALLBACK_API( void , FileTransferChooseIdleProcPtr )(void );
  126. typedef STACK_UPP_TYPE(FileTransferDefProcPtr)                     FileTransferDefUPP;
  127. typedef STACK_UPP_TYPE(FileTransferReadProcPtr)                 FileTransferReadUPP;
  128. typedef STACK_UPP_TYPE(FileTransferWriteProcPtr)                 FileTransferWriteUPP;
  129. typedef STACK_UPP_TYPE(FileTransferSendProcPtr)                 FileTransferSendUPP;
  130. typedef STACK_UPP_TYPE(FileTransferReceiveProcPtr)                 FileTransferReceiveUPP;
  131. typedef STACK_UPP_TYPE(FileTransferEnvironsProcPtr)             FileTransferEnvironsUPP;
  132. typedef STACK_UPP_TYPE(FileTransferNotificationProcPtr)         FileTransferNotificationUPP;
  133. typedef STACK_UPP_TYPE(FileTransferChooseIdleProcPtr)             FileTransferChooseIdleUPP;
  134. struct FTRecord {
  135.     short                             procID;
  136.     FTFlags                         flags;
  137.     FTErr                             errCode;
  138.     long                             refCon;
  139.     long                             userData;
  140.     FileTransferDefUPP                 defProc;
  141.     Ptr                             config;
  142.     Ptr                             oldConfig;
  143.     FileTransferEnvironsUPP         environsProc;
  144.     long                             reserved1;
  145.     long                             reserved2;
  146.     Ptr                             ftPrivate;
  147.     FileTransferSendUPP             sendProc;
  148.     FileTransferReceiveUPP             recvProc;
  149.     FileTransferWriteUPP             writeProc;
  150.     FileTransferReadUPP             readProc;
  151.     WindowPtr                         owner;
  152.     FTDirection                     direction;
  153.     SFReply                         theReply;
  154.     long                             writePtr;
  155.     long                             readPtr;
  156.     Ptr                             theBuf;
  157.     long                             bufSize;
  158.     Str255                             autoRec;
  159.     FTAttributes                     attributes;
  160. };
  161.  
  162.  
  163. enum {
  164.                                                                 /* FTReadProc messages */
  165.     ftReadOpenFile                = 0,                            /* count = forkFlags, buffer = pblock from PBGetFInfo */
  166.     ftReadDataFork                = 1,
  167.     ftReadRsrcFork                = 2,
  168.     ftReadAbort                    = 3,
  169.     ftReadComplete                = 4,
  170.     ftReadSetFPos                = 6,                            /* count = forkFlags, buffer = pBlock same as PBSetFPos */
  171.     ftReadGetFPos                = 7                                /* count = forkFlags, buffer = pBlock same as PBGetFPos */
  172. };
  173.  
  174.  
  175. enum {
  176.                                                                 /* FTWriteProc messages */
  177.     ftWriteOpenFile                = 0,                            /* count = forkFlags, buffer = pblock from PBGetFInfo */
  178.     ftWriteDataFork                = 1,
  179.     ftWriteRsrcFork                = 2,
  180.     ftWriteAbort                = 3,
  181.     ftWriteComplete                = 4,
  182.     ftWriteFileInfo                = 5,
  183.     ftWriteSetFPos                = 6,                            /* count = forkFlags, buffer = pBlock same as PBSetFPos */
  184.     ftWriteGetFPos                = 7                                /* count = forkFlags, buffer = pBlock same as PBGetFPos */
  185. };
  186.  
  187.  
  188. enum {
  189.                                                                 /*    fork flags */
  190.     ftOpenDataFork                = 1,
  191.     ftOpenRsrcFork                = 2
  192. };
  193.  
  194. enum { uppFileTransferDefProcInfo = 0x0000FEF0 };                 /* pascal 4_bytes Func(4_bytes, 2_bytes, 4_bytes, 4_bytes, 4_bytes) */
  195. enum { uppFileTransferReadProcInfo = 0x00002FE0 };                 /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 2_bytes) */
  196. enum { uppFileTransferWriteProcInfo = 0x00002FE0 };             /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 2_bytes) */
  197. enum { uppFileTransferSendProcInfo = 0x0000AFF0 };                 /* pascal 4_bytes Func(4_bytes, 4_bytes, 4_bytes, 2_bytes, 2_bytes) */
  198. enum { uppFileTransferReceiveProcInfo = 0x0000EFF0 };             /* pascal 4_bytes Func(4_bytes, 4_bytes, 4_bytes, 2_bytes, 4_bytes) */
  199. enum { uppFileTransferEnvironsProcInfo = 0x000003E0 };             /* pascal 2_bytes Func(4_bytes, 4_bytes) */
  200. enum { uppFileTransferNotificationProcInfo = 0x000003C0 };         /* pascal no_return_value Func(4_bytes, 4_bytes) */
  201. enum { uppFileTransferChooseIdleProcInfo = 0x00000000 };         /* pascal no_return_value Func() */
  202. #define NewFileTransferDefProc(userRoutine)                     (FileTransferDefUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferDefProcInfo, GetCurrentArchitecture())
  203. #define NewFileTransferReadProc(userRoutine)                     (FileTransferReadUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferReadProcInfo, GetCurrentArchitecture())
  204. #define NewFileTransferWriteProc(userRoutine)                     (FileTransferWriteUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferWriteProcInfo, GetCurrentArchitecture())
  205. #define NewFileTransferSendProc(userRoutine)                     (FileTransferSendUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferSendProcInfo, GetCurrentArchitecture())
  206. #define NewFileTransferReceiveProc(userRoutine)                 (FileTransferReceiveUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferReceiveProcInfo, GetCurrentArchitecture())
  207. #define NewFileTransferEnvironsProc(userRoutine)                 (FileTransferEnvironsUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferEnvironsProcInfo, GetCurrentArchitecture())
  208. #define NewFileTransferNotificationProc(userRoutine)             (FileTransferNotificationUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferNotificationProcInfo, GetCurrentArchitecture())
  209. #define NewFileTransferChooseIdleProc(userRoutine)                 (FileTransferChooseIdleUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferChooseIdleProcInfo, GetCurrentArchitecture())
  210. #define CallFileTransferDefProc(userRoutine, hTerm, msg, p1, p2, p3)  CALL_FIVE_PARAMETER_UPP((userRoutine), uppFileTransferDefProcInfo, (hTerm), (msg), (p1), (p2), (p3))
  211. #define CallFileTransferReadProc(userRoutine, count, pData, refCon, fileMsg)  CALL_FOUR_PARAMETER_UPP((userRoutine), uppFileTransferReadProcInfo, (count), (pData), (refCon), (fileMsg))
  212. #define CallFileTransferWriteProc(userRoutine, count, pData, refCon, fileMsg)  CALL_FOUR_PARAMETER_UPP((userRoutine), uppFileTransferWriteProcInfo, (count), (pData), (refCon), (fileMsg))
  213. #define CallFileTransferSendProc(userRoutine, thePtr, theSize, refCon, channel, flag)  CALL_FIVE_PARAMETER_UPP((userRoutine), uppFileTransferSendProcInfo, (thePtr), (theSize), (refCon), (channel), (flag))
  214. #define CallFileTransferReceiveProc(userRoutine, thePtr, theSize, refCon, channel, flag)  CALL_FIVE_PARAMETER_UPP((userRoutine), uppFileTransferReceiveProcInfo, (thePtr), (theSize), (refCon), (channel), (flag))
  215. #define CallFileTransferEnvironsProc(userRoutine, refCon, theEnvirons)  CALL_TWO_PARAMETER_UPP((userRoutine), uppFileTransferEnvironsProcInfo, (refCon), (theEnvirons))
  216. #define CallFileTransferNotificationProc(userRoutine, hFT, pFSSpec)  CALL_TWO_PARAMETER_UPP((userRoutine), uppFileTransferNotificationProcInfo, (hFT), (pFSSpec))
  217. #define CallFileTransferChooseIdleProc(userRoutine)             CALL_ZERO_PARAMETER_UPP((userRoutine), uppFileTransferChooseIdleProcInfo)
  218.  
  219. EXTERN_API( FTErr )
  220. InitFT                            (void);
  221.  
  222. EXTERN_API( Handle )
  223. FTGetVersion                    (FTHandle                 hFT);
  224.  
  225. EXTERN_API( short )
  226. FTGetFTVersion                    (void);
  227.  
  228. EXTERN_API( FTHandle )
  229. FTNew                            (short                     procID,
  230.                                  FTFlags                 flags,
  231.                                  FileTransferSendUPP     sendProc,
  232.                                  FileTransferReceiveUPP  recvProc,
  233.                                  FileTransferReadUPP     readProc,
  234.                                  FileTransferWriteUPP     writeProc,
  235.                                  FileTransferEnvironsUPP  environsProc,
  236.                                  WindowPtr                 owner,
  237.                                  long                     refCon,
  238.                                  long                     userData);
  239.  
  240. EXTERN_API( void )
  241. FTDispose                        (FTHandle                 hFT);
  242.  
  243. EXTERN_API( FTErr )
  244. FTStart                            (FTHandle                 hFT,
  245.                                  FTDirection             direction,
  246.                                  const SFReply *        fileInfo);
  247.  
  248. EXTERN_API( FTErr )
  249. FTAbort                            (FTHandle                 hFT);
  250.  
  251. EXTERN_API( FTErr )
  252. FTSend                            (FTHandle                 hFT,
  253.                                  short                     numFiles,
  254.                                  FSSpecArrayPtr         pFSSpec,
  255.                                  FileTransferNotificationUPP  notifyProc);
  256.  
  257. EXTERN_API( FTErr )
  258. FTReceive                        (FTHandle                 hFT,
  259.                                  FSSpecPtr                 pFSSpec,
  260.                                  FileTransferNotificationUPP  notifyProc);
  261.  
  262. EXTERN_API( void )
  263. FTExec                            (FTHandle                 hFT);
  264.  
  265. EXTERN_API( void )
  266. FTActivate                        (FTHandle                 hFT,
  267.                                  Boolean                 activate);
  268.  
  269. EXTERN_API( void )
  270. FTResume                        (FTHandle                 hFT,
  271.                                  Boolean                 resume);
  272.  
  273. EXTERN_API( Boolean )
  274. FTMenu                            (FTHandle                 hFT,
  275.                                  short                     menuID,
  276.                                  short                     item);
  277.  
  278. EXTERN_API( short )
  279. FTChoose                        (FTHandle *                hFT,
  280.                                  Point                     where,
  281.                                  FileTransferChooseIdleUPP  idleProc);
  282.  
  283. EXTERN_API( void )
  284. FTEvent                            (FTHandle                 hFT,
  285.                                  const EventRecord *    theEvent);
  286.  
  287. EXTERN_API( Boolean )
  288. FTValidate                        (FTHandle                 hFT);
  289.  
  290. EXTERN_API( void )
  291. FTDefault                        (Ptr *                    theConfig,
  292.                                  short                     procID,
  293.                                  Boolean                 allocate);
  294.  
  295. EXTERN_API( Handle )
  296. FTSetupPreflight                (short                     procID,
  297.                                  long *                    magicCookie);
  298.  
  299. EXTERN_API( void )
  300. FTSetupSetup                    (short                     procID,
  301.                                  const void *            theConfig,
  302.                                  short                     count,
  303.                                  DialogPtr                 theDialog,
  304.                                  long *                    magicCookie);
  305.  
  306. EXTERN_API( Boolean )
  307. FTSetupFilter                    (short                     procID,
  308.                                  const void *            theConfig,
  309.                                  short                     count,
  310.                                  DialogPtr                 theDialog,
  311.                                  EventRecord *            theEvent,
  312.                                  short *                theItem,
  313.                                  long *                    magicCookie);
  314.  
  315. EXTERN_API( void )
  316. FTSetupItem                        (short                     procID,
  317.                                  const void *            theConfig,
  318.                                  short                     count,
  319.                                  DialogPtr                 theDialog,
  320.                                  short *                theItem,
  321.                                  long *                    magicCookie);
  322.  
  323. EXTERN_API( void )
  324. FTSetupXCleanup                    (short                     procID,
  325.                                  const void *            theConfig,
  326.                                  short                     count,
  327.                                  DialogPtr                 theDialog,
  328.                                  Boolean                 OKed,
  329.                                  long *                    magicCookie);
  330.  
  331. EXTERN_API( void )
  332. FTSetupPostflight                (short                     procID);
  333.  
  334. EXTERN_API( Ptr )
  335. FTGetConfig                        (FTHandle                 hFT);
  336.  
  337. EXTERN_API( short )
  338. FTSetConfig                        (FTHandle                 hFT,
  339.                                  const void *            thePtr);
  340.  
  341. EXTERN_API( FTErr )
  342. FTIntlToEnglish                    (FTHandle                 hFT,
  343.                                  const void *            inputPtr,
  344.                                  Ptr *                    outputPtr,
  345.                                  short                     language);
  346.  
  347. /* (16) chenged OSErr to FTErr*/
  348. EXTERN_API( FTErr )
  349. FTEnglishToIntl                    (FTHandle                 hFT,
  350.                                  const void *            inputPtr,
  351.                                  Ptr *                    outputPtr,
  352.                                  short                     language);
  353.  
  354. /* (16) chenged OSErr to FTErr*/
  355. EXTERN_API( void )
  356. FTGetToolName                    (short                     procID,
  357.                                  Str255                 name);
  358.  
  359. EXTERN_API( short )
  360. FTGetProcID                        (ConstStr255Param         name);
  361.  
  362. EXTERN_API( void )
  363. FTSetRefCon                        (FTHandle                 hFT,
  364.                                  long                     refCon);
  365.  
  366. EXTERN_API( long )
  367. FTGetRefCon                        (FTHandle                 hFT);
  368.  
  369. EXTERN_API( void )
  370. FTSetUserData                    (FTHandle                 hFT,
  371.                                  long                     userData);
  372.  
  373. EXTERN_API( long )
  374. FTGetUserData                    (FTHandle                 hFT);
  375.  
  376. EXTERN_API( void )
  377. FTGetErrorString                (FTHandle                 hFT,
  378.                                  short                     id,
  379.                                  Str255                 errMsg);
  380.  
  381.  
  382.  
  383. #if PRAGMA_STRUCT_ALIGN
  384.     #pragma options align=reset
  385. #elif PRAGMA_STRUCT_PACKPUSH
  386.     #pragma pack(pop)
  387. #elif PRAGMA_STRUCT_PACK
  388.     #pragma pack()
  389. #endif
  390.  
  391. #ifdef PRAGMA_IMPORT_OFF
  392. #pragma import off
  393. #elif PRAGMA_IMPORT
  394. #pragma import reset
  395. #endif
  396.  
  397. #ifdef __cplusplus
  398. }
  399. #endif
  400.  
  401. #endif /* __FILETRANSFERS__ */
  402.  
  403.